home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SuperHack
/
SuperHack CD.bin
/
documentos
/
ircwar.TXT
< prev
next >
Wrap
Text File
|
1999-05-11
|
35KB
|
718 lines
Tßcticas de guerra en el IRC v.0.99a+
Por: RoMaN SoFt / LLFB (30/7/97)
______________________________________________________________________________________________
La distribuci≤n de este documento es "libre", con la ·nica condici≤n de
informar al autor en caso de subirlo a alg·n ftp site o pßgina web. La
misma restricci≤n se aplica a cualquier otra forma de difusi≤n p·blica
(revistas, news, Θtc).
###############################################################################################
---------------------------------------------------------------------------
0.- Contenido.
1.- Introducci≤n.
2.- Principios.
2.1.- C≤mo funciona una red IRC.
2.2.- Conseguir op sin que nadie te lo de.
2.3.- Otras formas de conseguir op.
2.4.- Bot de servicio.
3.- Ataques.
3.1.- Flood.
3.2.- Nick collide.
3.2.1.- Split server collide.
3.2.2.- Lag collide.
3.3.- Nuke.
3.3.1.- ICMP nuke.
3.3.2.- OOB nuke.
3.4.- Ping.
3.5.- Ssping.
4.- Spoofing.
5.- Resources.
6.- Agradecimientos.
7.- Notas finales.
1.- Introducci≤n.
Ultimamente la guerra en el IRC es, por desgracia, algo bastante com·n.
Conviene, a lo menos, estar informado de las distintas tΘcnicas que se
suelen usar para "luchar", aunque sea simplemente para detectar que te
estßn atacando y saber c≤mo lo estßn haciendo. No es mi intenci≤n
profundizar demasiado en el tema aunque intentarΘ detallar algunos puntos
que considere convenientes.
Todo lo que aquφ se hable es extensible en general a cualquier red IRC. No
obstante en algunos casos muy particulares me referirΘ a la red IRC hispana
("*.irc-hispano.org"). Ni que decir tiene que la informaci≤n que se
proporciona aquφ es con fines educativos; en ning·n caso debe ser usada
salvo en circunstancias excepcionalmente justificadas. Un uso abusivo puede
significar una k/g-line totalmente merecida. Yo no me hago responsable de
un posible mal uso de esta info.
2.- Principios.
Muchas veces el objetivo de un ataque no es otra cosa que hacerse con un
canal ("tomarlo"). Esto es relativamente fßcil y hay diversas tΘcnicas para
ello. El objetivo es hacerse con el op en el canal. Los medios: tu
inteligencia y astucia... ;-)
2.1.- C≤mo funciona una red IRC.-
El servidor de IRC propiamente dicho no es mßs que un programa corriendo
en background (un daemon) en una mßquina determinada (en Unix correrφa el
"ircd"). Los usuarios se conectan a dicha mßquina y acceden al servidor en
forma de clientes.
Una red IRC se compone de varios servidores corriendo en paralelo y
enlazados entre ellos, de forma que se mantegan comunicados (puedan
intercambiar mensajes entre ellos). Cuando un usuario se conecta a un
servidor determinado, Θste (el servidor) lo notifica a los demßs servidores
que forman parte de la red IRC. Igualmente, cualquier otra acci≤n es
notificada a todos los servidores, de forma que Θstos actuan como una
unidad. De esta forma el usuario se deja ver en todos los servidores aunque
fφsicamente s≤lo estΘ conectado a uno. Esto permite tener muchos usuarios
repartidos por diferentes servidores pero que virtualmente es como si
estuvieran todos en uno s≤lo.
La estructura de la red IRC es en forma de ßrbol (es decir, no puede haber
bucles, o "caminos cerrados": partiendo de un nodo no se llegue por ning·n
camino otra vez a dicho nodo) aunque un tanto especial: cada nodo se ve a
sφ mismo como el nodo raiz de la red. En la "literatura" esto se conoce
como "spanning tree". Un ejemplo de red podrφa ser:
[ Server 15 ] [ Server 13 ] [ Server 14]
/ \ /
/ \ /
[ Server 11 ] ------ [ Server 1 ] [ Server 12]
/ \ /
/ \ /
[ Server 2 ] [ Server 3 ]
/ \ \
/ \ \
[ Server 4 ] [ Server 5 ] [ Server 6 ]
/ | \ /
/ | \ /
/ | \____ /
/ | \ /
[ Server 7 ] [ Server 8 ] [ Server 9 ] [ Server 10 ]
:
[ etc. ]
:
Cuando se rompe uno de los eslabones (links) que unen 2 servidores el
conjunto se divide en 2 subconjuntos, los cuales intentarßn seguir
funcionando normalmente aunque de forma aislada. Esto es, cada subconjunto
permanece operativo y mantiene la comunicaci≤n entre los servers
pertenecientes a dicho subconjunto. Pero por razones obvias los servidores
de un subconjunto no ven a los del otro y viceversa. Esta situaci≤n se
conoce como net-split.
En una sesi≤n normal de IRC esto lo verφamos:
[1:23] *** Case_Zer0 has quit IRC (fuego.irc-hispano.org
io.irc-hispano.org)
Esto indica que se han spliteado los dos servidores indicados entre
parΘntesis y que a consecuencia de ello el usuario Case_Zer0 [ hi Case ;-)
] ha salido "de nuestra red IRC" (lo que estß ocurriendo es que se
encuentra en el otro subconjunto de servidores: a todos los efectos es que
como si se encontrase ya en otra red IRC).
Cuando el enlace caido se recupera (i.e. se reestablece la comunicaci≤n
entre los servers spliteados) se habla de net-merge. Esto se verφa en la
sesi≤n anterior como un "join" por parte del usuario que estaba en el
servidor spliteado (tanto el quit como el join anteriores son mecanismos
del propio IRC, es decir, el usuario anterior no dio ninguna orden de quit
ni de join, es transparente a dicho usuario).
Hay programas que detectan y avisan cuando se produce alg·n net-split o
net-merge: son los denominados "link-lookers", y su utilidad es bastante
obvia.
Por ejemplo, si el enlace dibujado en rojo (enlace server 2 <-> server 5)
cayera, el servidor 5 estarφa aislado de la red. Los usuarios de dicho
servidor dejarφan de ver a todos los demßs pertenecientes a servidores
distintos, y al contrario. Se dice que el servidor 5 estß spliteado. Es
fßcil reconocer a un servidor en esta situaci≤n: si entras en una red a
travΘs de un determinado servidor y te encuentras a muy poca gente es muy
normal que se deba a que estß spliteado de la red.
Otra posibilidad es que el enlace azul (3 <-> 12) cayera. En este caso el
servidor 12 se splitea de la red, pero tambiΘn lo hacen los servidores 13 y
14 indirectamente, por conectarse a travΘs del primero.
Para una informaci≤n completa del funcionamiento y estructura de una red
IRC, y del protocolo subyacente ("Internet Relay Chat Protocol") os remito
al RFC1459.
2.2.- Conseguir op sin que nadie te lo de.-
Cuando alguien se une a un canal donde no hay nadie (hace un /join #canal)
el servidor supone que se trata de un nuevo canal y le da op a dicho
usuario. Se dice que ha creado un canal. Vamos a aprovechar esto para
hacernos con el op en un canal ya existente. ┐C≤mo? Fßcil: solo hay que
aprovechar un net-split. Los pasos serφan los siguientes:
- Esperar un split (lo podemos detectar con un link-looker).
- Entrar (conectar) al servidor spliteado.
- /join #canal (donde canal es el canal donde queremos conseguir op).
- El server crearß un nuevo canal y tendrßs el op.
- Esperar a que se deshaga el split.
Si "hay suerte" (leer mßs abajo), al deshacerse el split conservaremos el
op en los restantes servidores (el servidor spliteado se encarga de dar las
≤rdenes correspondientes). Entonces se dice que hemos llevado a cabo un
"net-hack". Los usuarios presentes en el canal en el que hemos llevado a
cabo la acci≤n verßn algo como:
[1:41] *** irc.i3d.es sets mode: +o RoMaNSoFt
(donde el servidor que nos da op es el que antes estaba spliteado).
Esto no siempre funcionarß porque hay aspectos que todavφa no he
comentado. Paso a explicar el procedimiento y comentar algunos puntos
negros. Supongo que habrΘis comprendido el procedimiento; es muy simple:
aprovechar que el servidor spliteado no ve a los usuarios de otros
servidores y por tanto al canal previamente creado. Esto presupone que no
hay usuarios del servidor spliteado en el canal (en este caso no
funcionarφa) porque en este caso al entrar nosotros por el server spliteado
verφamos al canal como ya creado, con los usuarios de nuestro mismo
servidor (a los otros los "esconde" el split) y por tanto el server no nos
darß el op, como es habitual al entrar en cualquier canal ya existente.
TambiΘn hay que tener en cuenta que actualmente todos los servidores
tienen protecciones anti-nethack. En este caso, al deshacerse el split, los
restantes servidores te quitarßn el op a tφ en vez de ser al contrario
(imponer tu op en los restantes servers), protegiendo al canal PERO Θsto lo
harßn ·nicamente en caso de que ya hubiera ops en el canal antes de tu
intento de net-hack (aunque hay veces en que el server se equivoca y
mantiene tu op, quitßndoselo a los demßs). Es decir, que el net-hack
funcionarß s≤lo para canales donde no haya op ("opless channels"). Por esta
raz≤n, si queremos el op, necesitaremos tirar previamente a los ops
(echarlos del canal, de forma que pierdan su op) para luego llevar a cabo
el net-hack. ┐C≤mo tirarlos? De esto nos encargaremos mßs adelante, sigue
leyendo };-)
2.3.- Otras formas de conseguir op.-
La otra alternativa para conseguir el op es que alguien te lo de ;-) .
Puede ser un op del canal o un irc-op de la red, aunque para esto ·ltimo
tendrßs que dar una justificaci≤n convincente (como por ejemplo que os
acaban de tomar el canal, alguien os ha atacado, Θtc).
Para la primera alternativa entra en juego tu "don de la palabra": trata
de hacerte amigo de alg·n op para que Θste te lo pase. En ese momento ya
estßs capacitado para quitarle el op a todos los demßs ("mass-deop") y
quedarte con el canal. Esto lo hacen automßticamente muchos scripts
("automatic-deop"): nada mßs darte el op el script automßticamente deopea a
todos los ops (excepto a tφ, claro).
2.4.- Bot de servicio.-
Se trata de un "usuario" muy especial... un robot que se encarga entre
otras cosas de proteger los canales. En la red hispana se llama Scytale (en
CobraNet, por ejemplo, es KingCobra) y estß dentro de muchos canales
(registrados). Normalmente suele tener op, con lo cual el canal deja de ser
opless y se evita el net-hack :-( Suele tener ircop-status [channel-service
status] y ademßs tiene otras funciones en las que no pienso entrar.
Resumiendo: si hay bot, nuestro gozo a un pozo.
3.- Ataques.
En esta secci≤n entraremos en materia... }:-) Nuestro objetivo: tirar a
alguien del server irc.
3.1.- Flood.-
Los servidores IRC tienen que controlar el trßfico de entrada (el que
proviene del exterior) para evitar su congesti≤n. Una de las formas de
conseguirlo es no permitir que un cliente le mande mßs de una determinada
cantidad de informaci≤n en un peque±o intervalo de tiempo; o lo que es lo
mismo: la velocidad con que un cliente puede enviar datos al servidor estß
limitada.
Cuando un cliente supera el lφmite preestablecido por el servidor, Θste
cierra la conexi≤n con el cliente: lo echa del servidor porque no puede
soportar tanto caudal de entrada. El servidor lo "explica" asφ:
[1:59] *** _^TkLaS^_ has quit IRC (Excess Flood)
Un flood, en general, no es otra cosa que mandar mucha informaci≤n en poco
tiempo a alguien para intentar que se sature. Se puede floodear una
direcci≤n IP, ..., o lo que ahora nos concierne: un servidor de IRC.
La manera de aprovechar el flood en nuestro favor consiste en mandar
muchas peticiones de informaci≤n a nuestra vφctima, de forma que Θsta, al
contestar, supere el lφmite del servidor y Θste lo eche. Por ejemplo, si le
mandamos muchos /ctcp version's seguidos (requiriendo informaci≤n sobre el
programa cliente que estß utilizando) la vφctima floodearß al servidor
cuando conteste porque mandarß muchas veces (tantas como peticiones haya
habido) el texto de respuesta al servidor (para que del servidor vaya al
cliente que peticion≤, i.e., al atacante).
En esto del flood juega un papel muy importante el n·mero de peticiones
que se reciben en un peque±o intervalo de tiempo. Cuantas mßs se reciban,
mßs posibilidades hay de que el flood tenga Θxito. Por ello no es ninguna
tonterφa mandar peticiones desde varios puntos a la vez, y no desde uno
s≤lo, es decir, varios usuarios (íque podrφan ser una misma persona!) de la
red IRC manden peticiones a la vφctima todos a la vez en un determinado
momento. Si los usuarios (nicks) corresponden a una misma persona (una
misma direcci≤n IP) se habla de clones. Por tanto, una posible forma de
ataque serφa crearnos muchos clones y peticionar a la vez desde todos ellos
a la vφctima.
Pero los servidores tambiΘn suelen estar preparados para evitar muchos
clones (cada clone ocupa, por decirlo de alguna manera, una "linea" de
entrada al servidor, y esto consume recursos del mismo). Suele haber un
mßximo permitido (en el irc hispano es 2) denegßndosele el acceso a la red
a un tercer clone, o en caso de que Θste lo consiguiese expulsßndosele del
servidor ("matßndolo") (el programa servidor revisa peri≤dicamente las IP's
conectadas y detecta cuando hay varios usuarios con una misma direcci≤n
IP):
[1:32] *** _^Virus^_ has quit IRC (Killed (Clones!))
┐C≤mo provocar un flood con mßs de 2 clones entonces? La respuesta es
simple: en principio no se puede. ┐Entonces? Pues la soluci≤n es que varias
personas distintas se pongan de acuerdo para atacar a la vez a la vφctima.
Cada persona podrφa tener a su vez varios clones. Por ejemplo, si A
(atacante) quiere atacar a V (vφctima), A se pone de acuerdo con B y C
(otras 2 personas atacantes). A su vez supongamos que cada atacante tiene 2
clones: i.1 e i.2 (donde i=A,B,C). Entonces tendremos 6 usuarios
(conexiones IRC) distintos atacando a V, que serφan A.1, A.2, B.1, B.2, C.1
y C.2. Pero hay un problema: ┐c≤mo sincronizarse para atacar? ┐C≤mo
"ponerse de acuerdo" para mandar las peticiones en un determinado momento?
Para esto existe lo que se denomina "floodnet" que, como habrß adivinado
nuestro ßvido lector, es una "red" (asociaci≤n) de gente cuyo ·nico
objetivo es floodear a alguien. La ventaja que tiene es que la
sincronizaci≤n entre los distintos componentes de la floodnet es automßtica
(lo hacen los scripts) lo cual resuelve el problema anterior. TambiΘn
existe lo que se denomina "botnet" y que es anßlogo a la floodnet pero
usando bots (no confundir con los "de servicio"; estos ·ltimos los ponen
los servers de la red irc y no los usuarios) los cuales serßn lanzados
desde alguna shell Unix (intΘrprete de comandos en una mßquina Unix). Los
bots suelen estar prohibidos y cuando se detectan, a lo menos, son
expulsados:
[1:32] *** Viernes13 has quit IRC (Killed (You are not welcome to this
network!))
Hoy en dφa tanto los programas clientes de IRC como los scripts
implementan protecciones anti-flood que dificultan enormemente el Θxito de
un ataque de tipo flood. Por ejemplo, cuando detectan varias peticiones
seguidas mandan las respuestas espaciadas en el tiempo (con pausas) y no
inmediatamente, con lo cual se evita el flood.
TambiΘn hay tΘcnicas de flood bastante optimizadas (por ejemplo, usando
una floodnet) aunque en general un ataque flood no suele ser demasiado
eficiente y es mßs costoso lograr su Θxito que con algunas de las tΘcnicas
que se describen a continuaci≤n.
3.2.- Nick collide.-
Un "nick collide" ocurre cuando dos personas tienen un mismo nick. En
principio esto no deberφa ser posible (el servidor no deja usar un nick que
ya estß en uso) pero hay dos situaciones en las que podrφa darse el caso y
que se describen en los dos puntos siguientes.
El resultado de un nick collide depende del servidor (ircd). En servidores
antiguos (sin protecci≤n) el collide se resuelve matando a los dos usuarios
con mismo nick (íambos!). En otros mßs inteligentes (con protecci≤n) el
servidor guarda informaci≤n acerca de los usuarios y puede saber que
usuario tiene el nick con mayor antigⁿedad (i.e. quiΘn se lo puso antes),
matando ·nicamente al usuario con el nick mßs reciente (protegiendo al
usuario mßs "veterano").
3.2.1.- Split server collide.-
Se basa en aprovechar un net-split:
- Esperar un split.
- Entrar (conectar) al servidor spliteado.
- Ponerse como nick el de la vφctima.
- Esperar a que se deshaga el split.
Si todo va bien (el servidor no tiene protecci≤n), a la vuelta del split
se detectarß el collide y se matarßn tanto al atacante como a la vφctima.
L≤gicamente nuestro usuario atacante serß un clone nuestro, con lo cual no
pasa nada si es killeado.
3.2.2.- Lag collide.-
Consiste en aprovechar el lag de un servidor, o lo que es lo mismo, el
retraso en recibir los mensajes de otros servidores. Esta tΘcnica es mßs
efectiva que la anterior, pues funciona en servidores con protecci≤n.
Los pasos serφan los siguientes:
- Meter un clone en el servidor lageado.
- Esperar a que la vφctima cambie de nick (esto lo detectamos desde otro
servidor no lageado).
- Cambiar rßpidamente el nick de nuestro clone y ponerle el que se acaba
de poner la vφctima (el nuevo).
- Esperar al lag. ;)
Lo que ocurre es que nuestra orden de cambiar el nick para nuestro clone
llega antes al servidor (lageado) que la orden de cambio de nick de la
vφctima debido a que nuestra orden va directamente de nuestro cliente al
servidor lageado mientras que la otra va a travΘs de la red IRC (donde
hemos supuesto que se introduce un lag notable). Esto hace que el servidor
(lageado) tome a nuestro clone como "due±o" legφtimo del nick y mande un
kill al otro (la vφctima). Esto ocurrirφa en caso de servidores protegidos;
si es no protegido el resultado es que ambos mueren, resultado tambiΘn
aceptable, pues hemos acabado con nuestro objetivo. };-)
3.3.- Nuke.-
"Nuke" es la denominaci≤n genΘrica que se le suele dar a cualquier forma
de ataque consistente en mandar paquetes arbitrarios a una determinada
direcci≤n IP (no es que sea una definici≤n demasiado ortodoxa pero bueno...
:)). Realmente el tΘrmino "nuke" siempre se ha referido al primero de los
dos tipos que comentaremos, aunque aquφ se ha preferido tomar una
definici≤n mßs amplia de dicha palabra.
3.3.1.- ICMP nuke.-
El mßs veterano de los nukes [ :-) ] usa un protocolo subyacente de IP, el
ICMP ("Internet Control Message Protocol": parte integral del protocolo de
Internet [IP] que resuelve errores y controla los mensajes), para romper
una conexi≤n cliente-servidor de IRC (tirar a alguien del server). Para
entender c≤mo funciona hay que hablar un poco de protocolos; es aburrido
pero no hay mßs remedio...
Una conexi≤n IRC (cliente-servidor, que es lo que nos interesa) utiliza el
protocolo TCP (nivel 4 [transporte] en la torre OSI), el cual se apoya
sobre IP (nivel 3 [red]). IP se encarga, entre otras cosas, de hacer el
rutado de paquetes ("datagramas IP"), es decir, dado un destino ir enviando
los paquetes por el camino apropiado hasta alcanzar el host destino. TCP no
ve nada de esto, tan s≤lo el destino directamente (manda los segmentos TCP
directamente al destino), porque IP lo oculta (hace que el rutado sea
transparente a TCP). L≤gicamente para que un protocolo de nivel superior
funcione correctamente, tambiΘn deberßn hacerlo todos los que estΘn por
debajo. En particular, para que nuestra conexi≤n TCP (IRC) se mantenga
"viva", IP debe funcionar perfectamente. Y aquφ es donde interviene ICMP:
se encarga de informar de posibles anomalφas que se han producido en el
nivel 3 (IP), como por ejemplo, "host unreachable", que significarφa que no
se ha podido alcanzar el host (el paquete IP ha ido dando saltos ["hops"]
de un nodo a otro, hacia el destino, y ha llegado un momento en el que un
determinado nodo intermedio no sabφa quΘ hacer con Θl o ha expirado el
tiempo de vida de dicho paquete). En este caso, el paquete que informa del
error (ICMP) lo envφa el nodo intermedio que se ha dado cuenta del error
hacia el "remitente" que lanz≤ el paquete original (que no se ha podido
entregar a su destinatario). Los mensajes ICMP se situan dentro del campo
de datos de un datagrama IP y se envφan exactamente igual que si fueran
datos IP (no son prioritarios). No es objetivo de este escrito tratar mßs a
fondo este tema (para los interesados les aconsejo el libro
"Internetworking with TCP/IP, vol I", de Douglas E. Comer, disponible en
castellano ya en su tercera edici≤n).
Resumiendo: mediante ICMP informamos de que IP ha fallado, y por tanto,
tambiΘn los niveles superiores como TCP.
Comprendiendo lo anterior ya se puede intuir en quΘ consiste el ICMP nuke:
mandar mensajes ICMP falseados, enga±ando al destino, haciΘndole creer que
el otro extremo ha detectado un error y por tanto, provocando un "cierre"
de la comunicaci≤n. Vamos a explicar un poco mejor Θsto.
En una conexi≤n siempre tenemos dos extremos, lo que da dos posibilidades
a la hora de enga±ar, seg·n lo hagamos a uno u otro. En el caso de una
conexi≤n IRC, podemos llevar a cabo dos formas de ataque:
* Server nuking (nukear al server): los mensajes ICMP se mandan al
servidor IRC, haciΘndole creer que se ha producido un error al intentar
comunicarse con el cliente. Como respuesta a este mensaje el server cierra
la conexi≤n que tenφa con dicho cliente. El efecto producido es la
"expulsi≤n" del usuario por parte del servidor.
* Client nuking (nukear al cliente): esta vez se envφan los ICMP's al
cliente; Θste cree que el servidor no estß disponible y cierra la conexi≤n
(el cliente). El servidor no sabe nada en principio, pero detecta el cierre
de conexi≤n por parte del cliente, dando el correspondiente error y
cerrando tambiΘn la conexi≤n por su parte.
En teorφa las dos fomas de nuking son perfectamente vßlidas y eficientes,
aunque hay que tener ciertas consideraciones en cuenta, como son:
- tanto servidor como cliente pueden tener protecci≤n anti-nuke y puede ser
necesario atacar uno porque el otro estΘ protegido (ver mßs adelante).
- si atacas a un cliente, Θste puede detectar quiΘn le estß atacando con un
simple analizador de paquetes IP o tracer, y tambiΘn podrφa responder con
otro ataque de este o cualquier otro tipo (cuidado con quiΘn te metes ;-)).
- si atacas al servidor, el cliente no tiene manera de saber quiΘn le ha
"atacado" porque los mensajes ICMP no le han llegado a Θl sino al servidor
(ventaja); pero por otro lado, el servidor sφ sabe quiΘn ha hecho el ataque
y puede resultar en una K/G-Line a dicho usuario por parte del servidor (el
usuario podrφa ser baneado de toda la red de IRC).
- los inconvenientes de los dos puntos anteriores pueden ser solventados
falseando la direcci≤n origen de los mensajes ICMP que se envφan. Esta
tΘcnica se conoce como "spoofing" (ver punto 4).
Hay diversos tipos de error ICMP que se pueden utilizar a la hora de hacer
un nuke. En cuanto a la informaci≤n prßctica de c≤mo utilizar un nuker
(programa "nukeador"), debemos tener en cuenta que ademßs de suministrarle
el tipo de error que se desea producir, juegan un papel muy importante los
puertos, tanto origen como destino, que se elijan.
Una conexi≤n IRC (TCP) queda definida unφvocamente por los pares direcci≤n
IP origen-puerto origen y direcci≤n IP destino-puerto destino. Estos datos
son los que hay que suministrarles al programa nukeador. Puertos tφpicos
del servidor de IRC (serß el puerto destino en caso de server nuking o el
fuente si se trata de un client nuking) son 6665-9, 4400-6, 7000 y 7777.
En realidad cada servidor IRC tiene unos puertos oficialmente reconocidos
(que son conocidos p·blicamente: los podemos leer en el motd ["mensaje del
dia"] al entrar en el IRC) y otros que podrφamos denominar como privados, y
que se usan por ejemplo para las conexiones entre los distintos servidores
que forman la red. Un usuario puede estar usando uno de estos puertos
"fantasmas" (aunque el servidor tambiΘn puede limitar el acceso a estos
puertos) para esconderse de nukes, puesto que necesitamos conocer este dato
para que el nuke sea efectivo.
TambiΘn necesitamos conocer el puerto del cliente, aunque esto es mßs
difφcil porque varφa mucho (no son fijos como en el caso anterior)
dependiendo del sistema operativo que estΘ corriendo dicho cliente, los
puertos que ya tuviera ocupados antes de establecer la conexi≤n IRC, Θtc.
Lo normal es hacer un barrido de estos puertos empezando por el 1024 (hay
puertos que por convenio siempre se asignan a determinadas tareas y no se
pueden usar arbitrariamente con lo cual no necesitamos barrerlos) y
acabando en 4000, por ejemplo, aunque podrφa ser necesario aumentar este
n·mero.
Es tambiΘn muy ·til utilizar un "port-scan": programa que va probando los
distintos puertos de una direcci≤n IP (destino) dada e informa de la
respuesta recibida para cada uno de dichos puertos (asφ podemos saber, por
ejemplo, quΘ puertos de un servidor estßn dedicados a aceptar conexiones
IRC).
A continuaci≤n transcribo mensajes tφpicos de salida de nuestras
potenciales vφctimas en una sesi≤n tφpica de IRC:
[1:42] *** aRmiTaGe has quit IRC (Read error to
aRmiTaGe[ig-183.arrakis.es]: Connection reset by peer)
[1:13] *** KoNtRoL has quit IRC (Read error to KoNtRoL[195.76.99.76]: EOF
from client)
[3:17] *** BrOKeNn has quit IRC (Read error to BrOKeNn[194.224.57.171]:
Protocol not available)
[5:25] *** Eli has quit IRC (Read error to Eli[info760.jet.es]: Network is
unreachable)
[5:26] *** Eli has quit IRC (Read error to Eli[info760.jet.es]: Machine is
not on the network)
[4:20] *** vp has quit IRC (Read error to vp[ia-176.arrakis.es]: Connection
refused)
[2:41] *** Estrayk has quit IRC (Read error to Estrayk[ctv3011.ctv.es]: No
route to host)
La protecci≤n anti-nuke, a grosso modo, pasa por ignorar los mensajes ICMP
que lleguen, aunque Θsto ya estß limitando el propio funcionamiento del
protocolo IP, en el sentido de que ICMP es parte integrante de IP y no se
deberφa inhibir (┐quΘ ocurrirφa si llega un mensaje "de verdad" y es
ignorado?). Se puede llevar a cabo mßs o menos "finamente": por ejemplo
descartar solo los ICMP's de un tipo y no todos los posibles. Se podrφa
lograr con un firewall (software o hardware encargado de filtrar los
paquetes provinientes de la red en base a una reglas previamente definidas)
convenientemente configurado.
3.3.2.- OOB nuke.-
TambiΘn conocido como 'winnuke', ya que afecta s≤lo al sistema operativo
Windows, en cualquiera de sus "sabores": 3.x, 95 y NT. Se basa en un bug
que tiene este SO en la pila de protocolos por el cual el sistema se cuelga
("error de protecci≤n general...blah, blah...") cuando recibe un paquete
con el flag OOB ("Out of band") activado. El ataque es sencillo: mandar un
paquete de este tipo a un puerto (normalmente el 139) de nuestrß vφctima
(Θsta debe estar corriendo Windows, lo cual es muy normal hoy en dφa).
Existen programas ya hechos a los cuales simplemente le das la direcci≤n IP
de la vφctima y el programa lo hace todo.
La forma de protegerse es cerrar los puertos por los que nos puedan atacar
(el 139 principalmente) o aplicar alg·n parche al SO para quitarnos el bug.
Otra soluci≤n menos recomendable es la que llevan a cabo algunos ISPs
(proveedores de Internet), y que consiste en filtrar todos los paquetes
dirigidos al puerto 139 (inconveniente: nos estßn dejando inoperativo ese
puerto). Hoy en dφa es muy popular este bug y normalmente estß ampliamente
parcheado (aunque siempre habrß alg·n que otro despistado que no lo tenga
instalado }=)).
Como hemos dicho, este ataque no s≤lo consigue echar a la vφctima del
server sino que ademßs le deja colgado el ordenador (tendrß que hacer un
reboot), lo que lo hace especialmente peligroso. La vφctima saldrß del IRC
con un mensaje de tipo ping-timeout como:
[19:56] *** Goku has quit IRC (Ping timeout for
Goku[system.tech.arrakis.es])
3.4.- Ping.-
Algunos los llama tambiΘn "IP bombs" (bombas IP). Un ping es un tipo de
mensaje ICMP que se usa para ver si una mßquina se encuentra operativa y
accesible. El procedimiento es enviarle un ping a la mßquina; Θsta lo
recibe y contesta. Al recibir la contestaci≤n ya sabemos que la mßquina
vive. Si no se recibe en un plazo dado se considera como no accesible (la
mßquina podrφa estar apagada, o todos los "caminos" en la red hacia ella
cortados). Ademßs podemos obtener mßs datos como el grado de saturaci≤n de
una mßquina o red (midiendo el tiempo de respuesta de la mßquina, es decir,
el tiempo transcurrido desde que una mßquina origen envφa el ping hasta que
recibe la contestaci≤n de la otra).
La manera de usar esto de forma ofensiva consiste en mandar mßs pings a un
usuario de los que su mßquina pueda contestar, saturßndole su conexi≤n a
Internet. Por tanto se debe de hacer desde un enlace mßs potente que el que
pretendemos atacar.
Lo tφpico es que la vφctima estΘ en su casa y tenga un modem. Por tanto,
necesitamos una conexi≤n a inet mßs rßpida que eso. Lo normal es atacar
desde una mßquina ubicada ya en la red (conectada mediante ATM, FDDI, ...).
Por ejemplo, puede valer la cuenta de la Universidad ;-). La forma de
hacerlo serφa abriΘndonos un shell y tecleando:
$ ping -s 32000 <direcc. IP>
(la sintaxis puede variar ligeramente seg·n sistema operativo).
Los paquetes que se envφan al hacer ping son tφpicamente muy peque±os. Con
el modificador -s estamos forzando un nuevo tama±o (32000 bytes es
aceptable; tambiΘn podeis probar con 64000).
Pensad: un modem de 28.8 tardarß unos 18 segs. en recibir 64 Kbytes (sin
considerar compresi≤n), mientras que desde nuestra shell lo hemos mandado
en íídΘcimas de segundo!! Si consideramos ademßs que el comando ping manda
mßs de un paquete (los que queramos) ... íboom! TendrΘis el modem de
vuestra vφctima trabajando a toda pastilla para nada y fastidißndole todo
lo que estΘ haciendo. En particular, le estropearΘis su conexi≤n al IRC: en
el mejor de los casos la vφctima tendrß un lag horroroso y el peor serß
expulsada del servidor por "ping time-out".
3.5.- Ssping.-
Nos encontramos ante otro bug parecido al del OOB, que afecta a Win95 y NT
(aunque no a todas las configuraciones), y cuya idea es que el
"maravilloso" Windows "se lφa" a la hora de reconstruir paquetes que le han
llegado fragmentados y acaba con un cuelgue del ordenador. El ataque
consiste en precisamente mandar esos paquetes fragmentados a la vφctima.
Un bug de este tipo es viejo conocido de los sistemas UNIX (el ataque se
conocφa como "ping of death"); pero la novedad es que ahora lo sufren los
Windows. Aunque son cosas tΘcnicamente diferentes, la forma de proceder a
la hora de atacar es anßloga a OOB: solo hay que saber la direcci≤n IP de
la vφctima y íboom!: le dejamos colgado el ordenador.
La soluci≤n pasa por parchear el S.O. En particular, este bug parece que
no afecta al Trumpet Winsock asφ que si lo usais estareis protegidos.
4.- Spoofing.
Esta tΘcnica no es un ataque en sφ pero permite mejorar y perfeccionar
cualquier ataque (de los anteriores, por ejemplo). TambiΘn puede ser la
base de alg·n ataque, como ocurre con el IP Spoofing que los hackers suelen
emplear (me desviarφa del tema de este escrito si siguiese
escribiendo...).
Se trata de "spoofear" (=falsear) la direcci≤n IP de origen de los
paquetes que se mandan a la vφctima, de forma que Θsta crea que el origen
de dichos paquetes es otro (el que nosotros le indiquemos). De esta forma
protegemos nuestro anonimato, y en general podemos llevar a cabo cualquier
acci≤n que se nos pueda ocurrir y que se derive de una falsa direcci≤n
source (origen). Por ejemplo, podemos nukear a alguien, con la direcci≤n
fuente de otro, haciendo creer a la vφctima (si Θsta tiene un analizador de
paquetes o algo parecido) que es el otro el que le estß atacando }:-).
El spoofing es (o podrφa ser) una funcionalidad mßs del programa de ataque
(del nuker, del ping, ...). Como consiste en manejar IP desde un muy bajo
nivel en muchos casos se requieren privilegios especiales. Por ejemplo, en
el caso de mßquinas Unix, se necesita abrir "raw sockets" y Θsto requiere
de privilegios de superusuario (root).
5.- Resources.
Este apartado estß dedicado, brevemente, a los distintos programas
disponibles y ·tiles a nuestra causa :-).
Por ahora s≤lo incluyo la siguiente URL: http://www.7thsphere.com/virus.
Allφ podrßs encontrar toda clase de utilidades para Windows y Linux:
programas nukeadores, port-scanners, Θtc...
6.- Agradecimientos.
Quisiera dar las gracias a jcea@argo.es por echarle un vistazo a este
texto y por sus comentarios desinteresados sobre Θl.
7.- Notas finales.
Espero que este peque±o artφculo os haya servido al menos para comprender
un poco mßs el funcionamiento del IRC.
TambiΘn me gustarφa recordar que el IRC no es un campo de batalla, y que
no se debe atacar a la gente asφ porque asφ, salvo "en defensa propia" y
pocos casos mßs justificados. O:-) En cualquier caso un ataque nunca estß
justificado desde el punto de vista de los ircops, asφ que cuidado con las
K/G-lines ;-)
Por ·ltimo, decir que este artφculo es la primera versi≤n y que pudiera
contener numerosos errores asφ como alg·n que otro "punto negro". Se
agradecerφa toda clase de comentarios y sugerencias para mejorar el
documento: bug reports, asuntos que creßis no estßn bien explicados, temas
que faltan y se deberφan incluir, ..., y en definitiva todo lo que os
gustarφa que se incluyese en el documento. TambiΘn se aceptan O-lines ;-)
Podeis contactar con el autor de este escrito por email:
roman@deathsdoor.com. O localizarme en el IRC hispano bajo el nick de
RoMaNSoFt.
c'U l8er!!!!!
_______________________________________________________________________________________________
La distribuci≤n de este documento es "libre", con la ·nica condici≤n de
informar al autor en caso de subirlo a alg·n ftp site o pßgina web. La
misma restricci≤n se aplica a cualquier otra forma de difusi≤n p·blica
(revistas, news, Θtc).
###############################################################################################
---------------------------------------------------------------------------
* Este documento se encuentra disponible en versi≤n WordPad en la secci≤n
de software.
Ya puedes volver a la home page.
---------------------------------------------------------------------------
(c) RoMaN SoFt / LLFB, 1997.- (·ltima modificaci≤n de este fichero:
30/07/97)